package com.acmen.easyapi.validation.validator;

import com.acmen.easyapi.util.StringUtil;
import com.acmen.easyapi.validation.DataTypeValidator;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 正则表达校验器
 *
 * @author acmen
 * @date 2022-04-06
 */
@Component
public class RegexValidator implements DataTypeValidator {

    public boolean matches(String exp) {
        return exp.startsWith("match(") && exp.endsWith(")");
    }

    @Override
    public void validate(String exp, Object data, List<String> messages) {
        String regex = exp.trim();
        regex = exp.substring("match(".length());
        regex = exp.substring(0, exp.length() - 1);
        if (!data.toString().matches(regex)) {
            messages.add(data+"不是有效的数据！");
        }
    }

    /**
     * 校验说明
     *
     * @return
     */
    @Override
    public String getNote(String exp) {
        if(StringUtil.isNotEmpty(exp)){
            return  "数据必需通过正则表达式"+exp+"匹配；";
        }
        return "match(regex)：是一个正则表达术，传入的数据必需通过正则匹配；";
    }
}
